package com.nd.android.musicboxlibrary.business.bean;

import android.content.Context;
import android.text.TextUtils;

import com.common.allCommon.CommonUtils;
import com.nd.android.musicboxlibrary.R;
import com.nd.android.musicboxlibrary.business.comm.MagicNumber;
import com.nd.android.musicboxlibrary.util.HanyuPinyin;

import java.io.File;
import java.io.Serializable;

/**
 * 音乐信息
 */
public class MusicInfo extends BaseType implements Serializable, MagicNumber {
    /**
     * 
     * <br>Created 2014年11月28日 上午12:05:46
     * @author       wat.ztag
    */
    @Override
    public void initMagicNumber() {
    }

    private static final long serialVersionUID = -5995286085574809567L;
    private long mId;
    //高清音质的ID，by jiangwb
    private long mHQId;
    // 歌曲名
    private String mMusicName;
    // 演唱者
    private String mSingerName;
    // 专辑名称
    private String specialName;
    // 地址
    private String path;
    // 歌词文件
    private String lrcPath;
    // 总时长
    private String time;
    // 是否有MV
    private boolean mHasMv;
    // 是否是HQ
    private boolean mIsHQ;
    // 歌曲名称拼音
    private String namePy;
    // lrc文件id
    private long lrcId;
    // 文件大小
    private int mSize;
    // 已下载文件大小
    private int sizeDownLoaded;
    // 专辑ID
    private long albumId;
    // 背景图片Fid
    private long bgFid;

    private boolean isCheckedExpanded = false;

    private boolean isFaved;

    private boolean mIsDownLoaded;

    private boolean mIsDownLoading;

    private String key;

    
    /** 高清音质的文件大小 by jwb */
    private long mHqSize;
    
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + (int) (mId ^ (mId >>> n32));
        result = prime * result + ((mMusicName == null) ? 0 : mMusicName.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        MusicInfo other = (MusicInfo) obj;
        if (mId != other.mId) {
            return false;
        }
        if (mMusicName == null) {
            if (other.mMusicName != null) {
                return false;
            }
        } else if (!mMusicName.equals(other.mMusicName)) {
            return false;
        }
        return true;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:26
     * 
     * @return long
     * @author wat.ztag
     */
    public long getId() {
        return mId;
    }
    
    /**
     * 获取高清音质的id,如果小于等于0，表示没有高清音质
     * <br>
     * Created 2014年9月19日 下午19:18:26
     * 
     * @return long
     * @author jiangwb
     */
    public long getHQId() {
        return mHQId;
    }
    

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:29
     * 
     * @return String
     * @author wat.ztag
     */
    public String getMusicUrl() {
        return FileInfo.DIR_DOWNLOAD + mId + FileInfo.EXT_MP3;
    }

    /**
     * 获取高清音质的地址
     * <br>
     * Created 2014年11月19日 下午20:18:29
     * 
     * @return String
     * @author jiangwb
     */
    public String getHQMusicUrl() {
    	if(mHQId > 0){
    		return FileInfo.DIR_DOWNLOAD + mHQId + FileInfo.EXT_MP3;    		
    	}
    	return "";
    }
    
    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:31
     * 
     * @return String
     * @author wat.ztag
     */
    public String getMusicPath() {
        return FileInfo.DIR_LOCAL_MP3 + File.separator + mMusicName + FileInfo.EXT_MP3;
    }

    /**
     * 
     * <br>
     * Created 2014年11月19日 上午10:18:31
     * 
     * @return String
     * @author jiangwb
     */
    public String getHQMusicPath() {
        return FileInfo.DIR_LOCAL_MP3 + File.separator + mMusicName  + FileInfo.EXT_HQ_MP3;
    }
    
    public String getMusicTemp(){
    	   return FileInfo.DIR_LOCAL_MP3 + File.separator + mMusicName  + FileInfo.EXT_TEMP;
    }
    
    public String getHQMusicTemp(){
 	   return FileInfo.DIR_LOCAL_MP3 + File.separator + mMusicName  + FileInfo.EXT_HQ_TEMP;
 }
    
    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:34
     * 
     * @return String
     * @author wat.ztag
     */
    public String getLrcUrl() {
        return FileInfo.DIR_DOWNLOAD + lrcId;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:36
     * 
     * @return String
     * @author wat.ztag
     */
    public String getLrcPath() {
        return FileInfo.DIR_LOCAL_LRC + File.separator + mMusicName + FileInfo.EXT_LRC;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:38
     * 
     * @param size int
     * @return String
     * @author wat.ztag
     */
    public String getImgUrl(int size) {
        if (bgFid <= 0) {
            return null;
        } else {
            return FileInfo.DIR_DOWNLOAD + bgFid + "/size/" + size;
        }
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:41
     * 
     * @return String
     * @author wat.ztag
     */
    public String getMusicName() {
        return mMusicName;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:43
     * 
     * @return String
     * @author wat.ztag
     */
    public String getSingerName() {
        if (CommonUtils.isJayVersion()){
            return "周杰伦";
        }else{
            return "王力宏";
        }

    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:45
     * 
     * @return String
     * @author wat.ztag
     */
    public String getSpecialName() {
        return specialName;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:47
     * 
     * @return String
     * @author wat.ztag
     */
    public String getTime() {
        return time;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:18:50
     * 
     * @return boolean
     * @author wat.ztag
     */
    public boolean isHasMv() {
        return mHasMv;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:00
     * 
     * @return boolean
     * @author wat.ztag
     */
    public boolean isHQ() {
        return mIsHQ;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:03
     * 
     * @param isDownLoaded boolean
     * @author wat.ztag
     */
    public void setDownLoaded(boolean isDownLoaded) {
        this.mIsDownLoaded = isDownLoaded;
    }

    // 已下载
    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:06
     * 
     * @return boolean
     * @author wat.ztag
     */
    public boolean isDownLoaded() {
        return mIsDownLoaded;
    }

    // 正在下载中
    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:09
     * 
     * @return boolean
     * @author wat.ztag
     */
    public boolean isDownLoading() {
        return mIsDownLoading;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:12
     * 
     * @param isDownLoading boolean
     * @author wat.ztag
     */
    public void setDownLoading(boolean isDownLoading) {
        this.mIsDownLoading = isDownLoading;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:15
     * 
     * @param hasMv boolean
     * @author wat.ztag
     */
    public void setHasMv(boolean hasMv) {
        this.mHasMv = hasMv;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:18
     * 
     * @param isHQ boolean
     * @author wat.ztag
     */
    public void setHQ(boolean isHQ) {
        this.mIsHQ = isHQ;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:21
     * 
     * @param id long
     * @author wat.ztag
     */
    public void setId(long id) {
        this.mId = id;
    }

    /**
     * 
     * 设置高清音乐的ID
     * <br>
     * Created 2014年11月19日 下午19:19:21
     * 
     * @param hqID
     * @author jiangwb
     */
    public void setHQId(long hqID) {
        this.mHQId = hqID;
    }
    
    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:24
     * 
     * @param lrc String
     * @author wat.ztag
     */
    public void setLrcPath(String lrc) {
        this.lrcPath = lrc;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:27
     * 
     * @param musicName String
     * @author wat.ztag
     */
    public void setMusicName(String musicName) {
        this.mMusicName = musicName;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:30
     * 
     * @param strPath String
     * @author wat.ztag
     */
    public void setPath(String strPath) {
        this.path = strPath;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:37
     * 
     * @param singerName String
     * @author wat.ztag
     */
    public void setSingerName(String singerName) {
        this.mSingerName = singerName;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:40
     * 
     * @param name String
     * @author wat.ztag
     */
    public void setSpecialName(String name) {
        this.specialName = name;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:42
     * 
     * @param strTime String
     * @author wat.ztag
     */
    public void setTime(String strTime) {
        this.time = strTime;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:45
     * 
     * @return String
     * @author wat.ztag
     */
    public String getNamePy() {
        return namePy;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:47
     * 
     * @param name String
     * @author wat.ztag
     */
    public void setNamePy(String name) {
        this.namePy = name;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:49
     * 
     * @return long
     * @author wat.ztag
     */
    public long getLrcId() {
        return lrcId;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:53
     * 
     * @param id long
     * @author wat.ztag
     */
    public void setLrcId(long id) {
        this.lrcId = id;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:19:56
     * 
     * @return int
     * @author wat.ztag
     */
    public int getSize() {
        return mSize;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:00
     * 
     * @param size int
     * @author wat.ztag
     */
    public void setSize(int size) {
        this.mSize = size;
    }

    /**
     * 
     * <br>
     * Created 2014年11月18日 上午11:19:56
     * 
     * @return long
     * @author jiangwb
     */
    public long getHQSize(){
    	return mHqSize;
    }
    
    /**
     * 
     * <br>
     * Created 2014年11月18日 上午11:20:56
     * 
     * @param size
     * @author jiangwb
     */
    public void setHQSize(long hqSize) {
        this.mHqSize = hqSize;
    }
    
    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:02
     * 
     * @return int
     * @author wat.ztag
     */
    public int getSizeDownLoaded() {
        return sizeDownLoaded;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:11
     * 
     * @param sizeDownLoaded
     * @author wat.ztag
     */
    public void setSizeDownLoaded(int sizeDownLoaded) {
        this.sizeDownLoaded = sizeDownLoaded;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:17
     * 
     * @return long
     * @author wat.ztag
     */
    public long getAlbumId() {
        return albumId;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:20
     * 
     * @param albumId
     * @author wat.ztag
     */
    public void setAlbumId(long id) {
        this.albumId = id;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:22
     * 
     * @return String
     * @author wat.ztag
     */
    public String getSortKey() {
        key = "#";
        if (mMusicName != null) {
            key = HanyuPinyin.getHanyuPinyinKey(mMusicName);
        }
        return key;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:25
     * 
     * @return long
     * @author wat.ztag
     */
    public long getBgFid() {
        return bgFid;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:28
     * 
     * @param id long
     * @author wat.ztag
     */
    public void setBgFid(long id) {
        this.bgFid = id;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:31
     * 
     * @param mContext Context
     * @return String
     * @author wat.ztag
     */
    public String obtainMusicInfo(Context mContext) {
        String singer;
        String special;
        if (TextUtils.isEmpty(mSingerName)) {
            singer = mContext.getString(R.string.mbx_jay);
        } else {
            singer = mSingerName;
        }
        if (TextUtils.isEmpty(specialName)) {
            special = "";
        } else {
            special = " · " + specialName;
        }
        return singer + special;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:34
     * 
     * @return boolean
     * @author wat.ztag
     */
    public boolean isCheckedExpanded() {
        return isCheckedExpanded;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:36
     * 
     * @param isChecked boolean
     * @author wat.ztag
     */
    public void setCheckedExpanded(boolean isChecked) {
        this.isCheckedExpanded = isChecked;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:39
     * 
     * @return boolean
     * @author wat.ztag
     */
    public boolean isFaved() {
        return isFaved;
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:20:41
     * 
     * @param isFav boolean
     * @author wat.ztag
     */
    public void setFaved(boolean isFav) {
        this.isFaved = isFav;
    }

}
